package com.FFmpeg;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegLogCallback;

import java.io.File;
import java.io.UnsupportedEncodingException;

/**
 * @author 航
 * @date 2024/11/16 12:17
 * <p>
 * 使用 javaCV 来调用系统中安装的 FFmpeg
 * FFmpeg 记得配置环境变量
 **/
public class FFmpegJavaCV {

    private static final Logger logger = LogManager.getLogger(FFmpegJavaCV.class);

    public static void main(String[] args) throws UnsupportedEncodingException {
        FFmpegJavaCV fFmpegJavaCV = new FFmpegJavaCV();
        fFmpegJavaCV.test();
    }

    public void test() throws UnsupportedEncodingException {
        String videoFile = "E:\\01-动漫\\180秒能让你的耳朵感到幸福吗？\\《180秒能让你的耳朵感到幸福吗？》日本动漫第01集_免费在线观看_12wo动漫网.ts";
        File file = new File(videoFile);
        try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(file)) {
            // 设置日志回调，以便获取更详细的错误信息
            FFmpegLogCallback.set();
//            grabber.setOption("rtsp_transport", "tcp");
//            grabber.setFormat("rtsp");
            grabber.start();
            int width = grabber.getImageWidth();
            int height = grabber.getImageHeight();
            double frameRate = grabber.getFrameRate();
            logger.info("{}--{}--{}", width, height, frameRate);

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
